package 多线程; // 定义包名

import java.util.concurrent.Callable; // 导入Callable接口
import java.util.concurrent.ExecutionException; // 导入ExecutionException异常
import java.util.concurrent.FutureTask; // 导入FutureTask类

public class callableImpl implements Callable<String>{ // 定义类，实现Callable接口，返回String类型

    @Override
    public String call() throws Exception{ // 重写call方法，定义线程的执行逻辑
        System.out.println(Thread.currentThread().getName()); // 输出当前线程的名称
        return "ok"; // 返回结果
    }

    public static void main(String[] args) throws ExecutionException, InterruptedException{ // 主方法，程序的入口
        callableImpl c = new callableImpl(); // 创建Callable实现类的实例
        FutureTask<String> ft = new FutureTask<>(c); // 创建FutureTask对象，传入Callable实例

        Thread t1 = new Thread(ft); // 创建线程对象，传入FutureTask实例
                
        t1.start(); // 启动线程
        String res = ft.get(); // 获取线程执行的结果
        System.out.println(res); // 输出结果
    }
    
}
